/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-09-10 16:52:51
 * @LastEditTime: 2019-09-11 09:30:17
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let PS = NativeModules.JSPointStyle;

/**
 * @class PointStyle
 * @description  点样式（实心圆点）
 */
export default class PointStyle {
  /**
   * 构造一个新的PointStyle对象，可通过无参或有参构造。
   * 有参构造的参数为：颜色（string，eg：'rgba(128, 128, 128, 128)'），大小（float类型的Number）
   *
   * @memberof PointStyle
   * @returns {Promise<PointStyle>}
   */
  async createObj() {
    try {
      if (
        typeof arguments[0] === 'string' &&
        typeof arguments[1] === 'number'
      ) {
        var { PointStyleId } = await PS.createObjByCS(
          arguments[0],
          arguments[1]
        );

        var pointStyle = new PointStyle();
        pointStyle._MGPointStyleId = PointStyleId;
        return pointStyle;
      } else {
        var { PointStyleId } = await PS.createObj();
        var pointStyle = new PointStyle();
        pointStyle._MGPointStyleId = PointStyleId;
        return pointStyle;
      }
    } catch (e) {
      console.error(e);
    }
  }

  // /**
  //  * 通过颜色、大小构造一个新的FillStyle对象
  //  *
  //  * @memberof PointStyle
  //  * @param {Number} color 颜色 （int类型的Number）
  //  * @param {Number} size 大小  （float类型的Number）
  //  * @returns {Promise<PointStyle>}
  //  */
  // async createObjByCS(color, size){
  //     try {
  //         var {PointStyleId} = await PS.createObjByCS(color, size);
  //         var pointStyle = new PointStyle();
  //         pointStyle._MGPointStyleId = PointStyleId;
  //         return pointStyle;
  //     } catch (e) {
  //         console.error(e);
  //     }
  // }

  /**
   * 获取点样式的颜色
   *
   * @memberof PointStyle
   * @returns {String} 颜色 
   */
  async getColor() {
    try {
      let color = await PS.getColor(this._MGPointStyleId);
      return color;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置点样式的颜色
   *
   * @memberof PointStyle
   * @param {String} color 颜色 eg:'rgba(128, 128, 128, 128)'
   * @returns {Promise<Void>}
   */
  async setColor(color) {
    try {
      await PS.setColor(this._MGPointStyleId, color);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取点的大小
   *
   * @memberof PointStyle
   * @returns {Number} 点的大小 （float类型的Number）
   */
  async getSize() {
    try {
      let size = await PS.getSize(this._MGPointStyleId);
      return size;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置点的大小
   *
   * @memberof PointStyle
   * @param {Number} size 点的大小 （float类型的Number)
   * @returns {Promise<Void>}
   */
  async setSize(size) {
    try {
      await PS.setSize(this._MGPointStyleId, size);
    } catch (e) {
      console.error(e);
    }
  }
}
